package com.huashi.Seek;

public class BinarySearch {


    /**
     * Binary search int.
     *
     * @param array  待查询数组
     * @param left   左边界
     * @param right  右边界
     * @param target 目标值
     * @return 目标所在位置
     */
    /**
     * @description 二分查找的递归实现
     * @author rico
     * @param array 目标数组
     * @param low 左边界
     * @param high 右边界
     * @param target 目标值
     * @return 目标值所在位置
     */
    public static int binarySearch(int[] array, int low, int high, int target) {

        int mid = ((high - low) >> 1) + low;
        System.out.println("mid:"+mid);
        //递归终止条件
        if (low>high){
            return -1;
        }
        if (array[mid] == target) {
            System.out.println("target:"+target);
            return mid + 1;  // 返回目标值的位置，从1开始
        } else if (array[mid] > target) {
            // 由于array[mid]不是目标值，因此再次递归搜索时，可以将其排除
           return binarySearch(array, low, mid - 1, target);
        } else {
            // 由于array[mid]不是目标值，因此再次递归搜索时，可以将其排除
           return binarySearch(array, mid + 1, high, target);
        }
    }
}
